package tech.aistar.corejava.day11;

import java.util.Iterator;
import java.util.LinkedList;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:
 *      1 - 添加元素到头或者末尾
 *      2 - 获取但是不移除头或者末尾
 *      3 - 获取头并且移除
 *      4 - 获取尾并且移除
 * @date 2019/7/29 0029
 */
public class LinkedListDemo {
    public static void main(String[] args) {
        //创建一个LinkedList对象
        LinkedList<String> list = new LinkedList<>();

        list.add("java");
        list.add("mysql");
        list.add("python");
        list.add("xml");

        //演示特有的 - 集中在对列表的头和尾部进行操作.
        //将元素添加到链表的头部
        list.addFirst("oracle");//无返回类型

        System.out.println(list.offerFirst("sun"));//true

        //获取头部
        System.out.println(list.getFirst());//sun

        System.out.println(list.peekFirst());//sun

        //获取但是移除头部的
       // System.out.println(list.remove());//sun

       // System.out.println(list.removeFirst());//sun

        //添加到末尾
        //boolean add(E e);
        //void addLast(E e);

        //获取但是不移除列表的最后一个元素
       // System.out.println(list.getLast());//xml
        //System.out.println(list.peekLast());

        //获取并且移除的
        System.out.println(list.removeLast());//xml

        //遍历方式
        //直接输出
        //普通for循环
        //增强for循环
        //迭代器
        //每种集合的底层的数据结构是不一样的 - 遍历方式是不一样
        //提供统一方式 - 迭代器.
        System.out.println("===========");
        Iterator<String> iter = list.iterator();
        while(iter.hasNext()){
            String e = iter.next();
            System.out.println(e);
        }
    }
}
